package com.cn.learn.creator.domain.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.sql.Date;
import java.sql.Timestamp;

/**
 * @ClassName Table
 * @Description 数据表对象
 * @Author JiJiang
 * @Date 2023/7/9 13:57
 * @Version 1.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class Table extends BaseEntity {

    /**
     * 表所属的目录（数据库）名称
     */
    private String tableCatalog;


    /**
     * 表所属的模式（数据库）名称
     */
    private String tableSchema;


    /**
     *表的名称
     */
    private String tableName;

    /**
     * 表的类型，如BASE TABLE（物理表）或VIEW（视图）
     */
    private String tableType;

    /**
     * 表的存储引擎
     */
    private String engine;

    /**
     * 表的版本号
     */
    private Integer version;

    /**
     * 表的行格式
     */
    private String rowFormat;

    /**
     * 表中的行数
     */
    private Long tableRows;


    /**
     * 平均行长度
     */
    private Long avgRowLength;

    /**
     * 表中数据长度
     */
    private Long dataLength;


    /**
     * 表中数据的最大长度
     */
    private Long maxDataLength;

    /**
     * 表中索引的长度
     */
    private Long indexLength;


    /**
     * 表中未使用的空间大小。它表示表中已删除的行所占用的空间。
     */
    private Long dataFree;

    /**
     * 自增值
     */
    private Long autoIncrement;

    /**
     * 表的创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp createTime;

    /**
     * 表的最后更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 表的最后检查时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkTime;

    /**
     * 表的字符集和排序规则
     */
    private String tableCollation;

    /**
     * 表的校验和
     */
    private Long checksum;


    /**
     * 创建表时指定的选项
     */
    private String createOptions;

    /**
     * 表的注释
     */
    private String tableComment;


}
